#include<iostream>
#include<memory>
//条款15:在资源管理类中提供对原始资源的访问
//std::shared_ptr  和 auto_ptr 也提供了* and -> 和 指针取值
class Investment
{
    public:
        bool isTaxFree() const
        {
            return false;
        }

    private:
};

Investment* createInvestment()
{
    return nullptr;
}
std::shared_ptr<Investment> pil(createInvestment());
bool taxable = !(pil->isTaxFree());     //通过operator->访问资源
std::unique_ptr <Investment> pi2(createInvestment());
bool taxable2 = !((*pi2).isTaxFree());  //通过operator*访问资源

class FontHandle
{

};
FontHandle getFont();
void releaseFont(FontHandle fh);
class Font
{
    public:
    explicit Font(FontHandle fh)
    :f(fh)
    {}
    ~Font()
    {
        releaseFont(f);
    }
    //提供访问原始资源的接口
    FontHandle get()
    {
        return f;
    }
    private:
    FontHandle f;//原始字体资源
};

int main()
{
    return 0;
}

//总结:APIs往往要求访问原始资源(raw resources), 所以每个RAIIclass 应该提供一个"取得所管理1资源的方法"
//对原始资源的访问可能通过显示转换
